##########排序函数##############
##1. order()（基础 R 函数）
# 创建示例数据框
df <- data.frame(
  id = 1:5,
  score = c(85, 72, 90, 68, 88)
)

# 用order()获取排序索引，再对数据框排序
sorted_index <- order(df$score)  # 升序排序
df_sorted <- df[sorted_index, ]
df_sorted

# 降序排序（加负号）
sorted_index_desc <- order(-df$score)
df_sorted_desc <- df[sorted_index_desc, ]
df_sorted_desc


##2. arrange()（dplyr包）
library(dplyr)  #加载dplyr包
# 升序排序
arrange(df, score)

# 降序排序（加desc()）
arrange(df, desc(score))

# 多列排序（先按score升序，再按id升序）
arrange(df, score, id)


################选取子集函数############
##1. subset()（基础 R 函数）
# 选取score≥80的行
subset(df, score >= 80)

# 选取score≥80且id为奇数的行
subset(df, score >= 80 & id %% 2 == 1)

# 选取列（仅保留id和score列）
subset(df, select = c(id, score))


##2. filter()（dplyr 包）
# 选取score≥80的行
filter(df, score >= 80)

# 多条件筛选（score≥80且id≤3）
filter(df, score >= 80, id <= 3)

# 结合逻辑运算符（score在80-90之间）
filter(df, score %in% 80:90)

##3. []逻辑语句
# 选取score≥80的行
df[df$score >= 80,]

# 多条件筛选（score≥80且id≤3）
df[df$score >= 80 & df$id <= 3,]
